Script(
Definition(point(),A::Point,null),
Definition(line(A::Point,B::Point),a::Line,not(is(A,B))),
Definition(segment(A::Point,B::Point),s::Segment,not(is(A,B))),
Definition(length(segment(A::Point,B::Point)),[distance(A,B)],null),
Definition(halfline(A::Point,B::Point),h::Halfline,not(is(A,B))),
Definition(triangle(A::Point,B::Point,C::Point),t::Triangle,not(collinear(A,B,C))),
Definition(triangle(l::Line,m::Line,n::Line),[triangle(intersection(l,m),intersection(l,n),intersection(m,n))],not(concurrent(l,m,n))),
Definition(quadrilateral(A::Point,B::Point,C::Point,D::Point),a::Quadrilateral,null),
Definition(angle(A::Point,B::Point,C::Point),a::Angle,and(not(is(A,B)),not(is(B,C)),not(is(A,C)))),
Definition(angle(line(A::Point,B::Point),line(C::Point,D::Point)),[angle(A,intersection(line(A,B),line(C,D)),C)whereintersect(line(A,B),line(C,D))],null),
Definition(conic(A::Point,B::Point,C::Point,D::Point,E::Point),c::Conic,null),
Definition(size(angle(A::Point,B::Point,C::Point)),s::Degree,null),
Definition(circle(O::Point,r::Length),c::Circle,not(equal(r,0::Length))),
Definition(arc(A::Point,B::Point,C::Point),a::Arc,null),
Definition(perpendicularline(A::Point,l::Line),m::Line,null),
Definition(parallelline(A::Point,l::Line),m::Line,not(incident(A,l))),
Definition(is(A::Point,B::Point),b::Boolean,null),
Definition(is(line(A::Point,B::Point),l::Line),[and(incident(A,l),incident(B,l))],null),
Definition(is(triangle(A::Point,B::Point,C::Point),triangle(D::Point,E::Point,F::Point)),[and(equal(distance(A,B),distance(D,E)),equal(distance(B,C),distance(E,F)),equal(distance(A,C),distance(D,F)))],null),
Definition(incident(A::Point,o::Circle),[equal(distance(center(o),A),length(radius(o)))],null),
Definition(incident(A::Point,l::Line),b::Boolean,null),
Definition(incident(A::Point,segment(B::Point,C::Point)),[and(incident(A,line(B,C)),differentside(B,C,A))],null),
Definition(incident(A::Point,line(B::Point,C::Point)),b::Boolean,null),
Definition(incident(A::Point,halfline(B::Point,C::Point)),[and(incident(A,line(B,C)),sameside(A,C,B))],null),
Definition(incident(A::Point,perpendicularline(B::Point,l::Line)),[perpendicular(line(A,B),l)],null),
Definition(incident(A::Point,parallelline(B::Point,l::Line)),[parallel(line(A,B),l)],null),
Definition(incident(A::Point,bisector(B::Point,C::Point,D::Point)),[equal(distance(A,line(B,C)),distance(A,line(C,D)))],null),
Definition(ratio(A::GeometricQuantity,B::GeometricQuantity),a::AlgebraicQuantity,null),
Definition(ratio(a::AlgebraicQuantity,b::AlgebraicQuantity),a::AlgebraicQuantity,null),
Definition(equal(ratio(A::GeometricQuantity,B::GeometricQuantity),ratio(a::AlgebraicQuantity,b::AlgebraicQuantity)),[equal(times(b,A),times(a,B))],null),
Definition(isout(A::Point,o::Circle),[lt(length(radius(o)),distance(A,center(o)))],null),
Definition(isin(A::Point,o::Circle),[lt(distance(A,center(o)),length(radius(o)))],null),
Definition(isin(O::Point,triangle(A::Point,B::Point,C::Point)),b::Boolean,null),
Definition(collinear(A::Point,B::Point,C::Point),[incident(A,line(B,C))],and(not(is(A,B)),not(is(B,C)))),
Definition(concurrent(l::Line,m::Line,n::Line),[incident(intersection(l,m),n)],and(not(is(l,n)),not(is(m,n)))),
Definition(concurrent(l::Segment,m::Segment,n::Segment),[incident(intersection(l,m),n)],and(not(is(l,n)),not(is(m,n)))),
Definition(perpendicular(line(A::Point,B::Point),line(C::Point,D::Point)),b::boolean,null),
Definition(parallel(line(A::Point,B::Point),line(C::Point,D::Point)),b::Boolean,null),
Definition(intersect(l::Line,m::Line),[not(parallel(l,m))],null),
Definition(intersect(l::Line,m::Circle),[lt(distance(center(m),l),length(radius(m)))],null),
Definition(intersect(m::Circle,n::Circle),[lt(distance(center(m),center(n)),plus(length(radius(m)),length(radius(n))))],null),
Definition(sameside(A::Point,B::Point,l::Line),b::Boolean,null),
Definition(sameside(A::Point,B::Point,C::Point),b::Boolean,collinear(A,B,C)),
Definition(differentside(A::Point,B::Point,l::Line),b::Boolean,null),
Definition(differentside(A::Point,B::Point,C::Point),b::Boolean,collinear(A,B,C)),
Definition(endpoint(segment(A::Point,B::Point)),{[A];[B]},null),
Definition(vertex(triangle(A::Point,B::Point,C::Point)),{[A];[B];[C]},null),
Definition(orthocenter(triangle(A::Point,B::Point,C::Point)),[concurrentpoint(altitudelines(triangle(A,B,C)))],null),
Definition(centroid(triangle(A::Point,B::Point,C::Point)),[concurrentpoint(median(A,side(B,C)),median(B,side(A,C)),median(C,side(A,B)))],null),
Definition(barycenter(triangle(A::Point,B::Point,C::Point)),[centroid(triangle(A,B,C))],null),
Definition(geometriccenter(triangle(A::Point,B::Point,C::Point)),[centroid(triangle(A,B,C))],null),
Definition(incenter(t::Triangle),[center(incircle(t))],null),
Definition(circumcenter(t::Triangle),[center(circumcircle(t))],null),
Definition(circumradius(t::Triangle),[radius(circumcircle(t))],null),
Definition(inradius(t::Triangle),[radius(incircle(t))],null),
Definition(midperpendicularline(segment(A::Point,B::Point)),[perpendicularline(midpoint(segment(A,B)),line(A,B))],null),
Definition(distance(A::Point,B::Point),l::Length,null),
Definition(distance(A::Point,l::Line),[distance(A,foot(A,l))],null),
Definition(pointon(o::Circle),A::Point,null),
Definition(pointon(l::Line),A::Point,null),
Definition(midpoint(A::Point,B::Point),[midpoint(segment(A,B))],null),
Definition(midpoint(segment(A::Point,B::Point)),C::Point,null),
Definition(circle(O::Point,A::Point),o::Circle,null),
Definition(circle(A::Point,B::Point,C::Point),o::Circle,null),
Definition(foot(A::Point,l::Line),[intersection(perpendicularline(A,l),l)],not(incident(A,l))),
Definition(intersection(l::Line,m::Line),A::Point,intersect(l,m)),
Definition(intersection(l::Segment,m::Segment),A::Point,null),
Definition(intersection(l::Line,o::Circle),A::Point,intersect(l,o)),
Definition(intersection(halfline(A::Point,B::Point),o::Circle),C::Point,in(A,o)),
Definition(intersection(m::Circle,n::Circle),A::Point,intersect(m,n)),
Definition(tangentpoint(l::Line,o::Circle),A::Point,tangent(l,o)),
Definition(tangentpoint(m::Circle,n::Circle),A::Point,tangent(m,n)),
Definition(2tangentline(A::Point,o::Circle),l::Line,out(A,o)),
Definition(1tangentline(A::Point,o::Circle),[perpendicularline(A,line(A,Center(o)))],incident(A,o)),
Definition(center(o::Circle),O::Point,null),
Definition(radius(o::Circle),[segment(center(o),pointon(o))],null),
Definition(SBintangentcircle(A::Point,o::Circle),[circle(A,intersection(halfline(center(o),A),o))],and(in(A,o),not(is(A,center(o))))),
Definition(BSintangentcircle(A::Point,o::Circle),[circle(A,intersection(halfline(A,center(o)),o))],and(in(A,o),not(is(A,center(o))))),
Definition(extangentcircle(A::Point,o::Circle),[circle(A,intersection(segment(center(o),A),o))],out(A,o)),
Definition(tangent(m::Circle,n::Circle),[or(extangent(m,n),intangent(m,n))],null),
Definition(tangentcircle(A::Point,o::Circle),[circle(A,intersection(line(center(o),A),o))],not(is(A,center(o)))),
Definition(extangent(m::Circle,n::Circle),[equal(plus(length(radius(m)),length(radius(n))),distance(center(m),center(n)))],null),
Definition(intangent(m::Circle,n::Circle),[or(BSintangent(m,n),SBintangent(m,n))],null),
Definition(BSintangent(m::Circle,n::Circle),[equal(minus(length(radius(m)),length(radius(n))),distance(center(m),center(n)))],null),
Definition(SBintangent(m::Circle,n::Circle),[equal(minus(length(radius(n)),length(radius(m))),distance(center(m),center(n)))],null),
Definition(side(A::Point,B::Point),[segment(A,B)],null),
Definition(median(A::Point,segment(B::Point,C::Point)),[segment(A,midpoint(segment(B,C)))],not(collinear(A,B,C))),
Definition(medians(triangle(A::Point,B::Point,C::Point)),{[median(A,segment(B,C))];[median(B,segment(A,C))];[median(C,segment(A,B))]},null),
Definition(cevian(A::Point,segment(B::Point,C::Point)),[segment(A,D::Point)whereD:=pointon(segment(B,C))],not(collinear(A,B,C))),
Definition(altitude(A::Point,segment(B::Point,C::Point)),[segment(A,foot(A,line(B,C)))],not(collinear(A,B,C))),
Definition(altitudes(triangle(A::Point,B::Point,C::Point)),{[altitude(A,segment(B,C))];[altitude(B,segment(A,C))];[altitude(C,segment(A,B))]},null),
Definition(altitudeline(A::Point,segment(B::Point,C::Point)),[perpendicularline(A,line(B,C))],not(collinear(A,B,C))),
Definition(altitudelines(triangle(A::Point,B::Point,C::Point)),{[altitudeline(A,segment(B,C))];[altitudeline(B,segment(A,C))];[altitudeline(C,segment(A,B))]},null),
Definition(bisectorline(A::Point,B::Point,C::Point),[line(B,D::Point)whereequal(size(angle(C,B,D)),size(angle(D,B,A)))],null),
Definition(bisectorline(A::Point,B::Point,C::Point),l::Line,null),
Definition(bisector(B::Point,A::Point,C::Point),[segment(A,intersection(bisectorline(B,A,C),line(B,C)))],not(collinear(A,B,C))),
Definition(bisectors(triangle(A::Point,B::Point,C::Point)),{[bisector(A,B,C)];[bisector(B,C,A)];[bisector(C,A,B)]},null),
Definition(ninepointcircle(triangle(A::Point,B::Point,C::Point)),[circle(midpoint(A,B),midpoint(A,C),midpoint(B,C))],null),
Definition(Eulerpoint(A::Point,t::Triangle),[midpoint(segment(A,orthocenter(t)))],null),
Definition(Eulerline(a::Triangle),[collinearline(orthocenter(a),centroid(a),circumcenter(a))],null),
Definition(collinearline(A::Point,B::Point,C::Point),[line(choosediff({A;B;C},2))],collinear(A,B,C)),
Definition(concurrentpoint(l::Line,m::Line,n::Line),[intersection(choosediff({l;m;n},2))],concurrent(l,m,n)),
Definition(concurrentpoint(segment(A::Point,B::Point),segment(C::Point,D::Point),segment(E::Point,F::Point)),[concurrentpoint(line(A,B),line(C,D),line(E,F))],null),
Definition(circumcircle(triangle(A::Point,B::Point,C::Point)),[circle(A,B,C)],null),
Definition(incircle(triangle(A::Point,B::Point,C::Point)),[circle(O::Point,foot(O,line(A,B)))where O:=intersection(bisectorline(A,B,C),bisectorline(B,C,A))],null),
Definition(excircle(C::Point,side(A::Point,B::Point)),[circle(O::Point,foot(O,line(A,B)))where O:=intersection(bisectorline(C,B,A),bisectorline(B,A,C))],null),

Definition(escenter(C::Point,side(A::Point,B::Point)),[intersection(bisectorline(C,B,A),bisectorline(B,A,C))],null),

Definition(escenter(triangle(A::Point,B::Point,C::Point)),{[escenter(A,side(B,C))];[escenter(B,side(A,C))];[escenter(C,side(A,B))]},null),

Definition(excircle(triangle(A::Point,B::Point,C::Point)),{[excircle(A,side(B,C))];[excircle(B,side(A,C))];[excircle(C,side(A,B))]},null),
Definition(tritangentcircle(triangle(A::Point,B::Point,C::Point)),{[incircle(triangle(A,B,C))];[excircle(A,side(B,C))];[excircle(B,side(A,C))];[excircle(C,side(A,B))]},null),
Definition(equilateraltriangle(A::Point,B::Point,C::Point),[triangle(A,B,rotate(A,B,pi/3))],null),
Definition(externalequilateraltriangle(segment(A::Point,B::Point),C::Point),[triangle(A,B,rotate(A,B,pi/3))],not(incidentLine(C,line(A,B)))),
Definition(Napoleontriangle(triangle(A::Point,B::Point,C::Point)),[triangle(barycenter(externalequilateraltriangle(side(B,C),A)),barycenter(externalequilateraltriangle(side(C,A),B)),barycenter(externalequilateraltriangle(side(A,B),C)))],null),
Definition(Pappus(A::Point,B::Point,C::Point,D::Point,E::Point,F::Point,P::Point,Q::Point,R::Point),[configuration(C:=pointon(line(A,B)),F:=pointon(line(D,E)),P:=intersection(line(A,E),line(D,B)),Q:=intersection(line(A,F),line(D,C)),R:=intersection(line(B,F),line(E,C)))],null),
Definition(concyclic(A::Point,B::Point,C::Point,D::Point,E::Point,F::Point),[configuration(O::Point:=center(circle(A,B,C)),D:=pointon(circle(O,A)),E:=pointon(circle(O,A)),F:=pointon(circle(O,A)))],null),
Definition(concyclic(A::Point,B::Point,C::Point,D::Point),[incident(D,circle(A,B,C))],null),
Definition(completequadrilateral(A::Point,B::Point,C::Point,D::Point,E::Point,F::Point),[configuration(E:=intersection(line(A,B),line(C,D)),F:=intersection(line(A,C),line(B,D)))],null),
Definition(diagonal(completequadrilateral(A::Point,B::Point,C::Point,D::Point,E::Point,F::Point)),{[segment(A,D)];[segment(B,C)];[segment(E,F)]},null),
Definition(Gaussline(A::Point,B::Point,C::Point,D::Point),[collinearline(midpoint(diagonal(completequadrilateral(A,B,C,D,E::Point,F::Point))))],null),
Definition(Simsonline(D::Point,triangle(A::Point,B::Point,C::Point)),[collinearline(foot(D,side(A,B)),foot(D,side(A,C)),foot(D,side(B,C)))],null),
Definition(mediator(segment(A::Point,B::Point)),[midperpendicularline(segment(A,B))],null),
Definition(orthictriangle(triangle(A::Point,B::Point,C::Point)),[triangle(foot(A,line(B,C)),foot(B,line(A,C)),foot(C,line(A,B)))],null),
Definition(homothetic(triangle(A::Point,B::Point,C::Point),triangle(A::Point,B::Point,C::Point)),[and(parallel(line(A,B),line(D,E)),parallel(line(A,C),line(D,F)),parallel(line(B,C),line(E,F)))],null),
Definition(homotheticcenter(triangle(A::Point,B::Point,C::Point),triangle(D::Point,E::Point,F::Point)),[concurrentpoint(line(A,D),line(B,E),line(C,F))],null),
Definition(tangentialtriangle(triangle(A::Point,B::Point,C::Point)),[triangle(perpendicularline(A,line(O::Point,A)),perpendicularline(B,line(O,B)),perpendicularline(C,line(O,C)))whereO:=circumcenter(triangle(A,B,C))],null),
Definition(antiparallel(l::Line,m::Line,n::Line),[equal(size(angle(l,n)),size(angle(n,m)))],null),
Definition(orthorcentricgroup(H::Point,triangle(A::Point,B::Point,C::Point)),[configuration(H:=orthocenter(triangle(A,B,C)))],null),
Definition(circumdiameterline(A::Point,side(B::Point,C::Point)),[line(A,circumcenter(triangle(A,B,C)))],null),
Definition(symmetry(A::Point,line(B::Point,C::Point)),[symmetry(A,foot(A,line(B,C)))],null),
Definition(symmetry(A::Point,B::Point),C::Point,null),
Definition(anticomplementarytriangle(triangle(A::Point,B::Point,C::Point)),[triangle(D::Point,E::Point,F::Point)whereand(is(A,midpoint(segment(D,E))),is(B,midpoint(segment(E,F))),is(C,midpoint(segment(D,F))))],null),
Definition(anticenter(cyclicquadrilateral(A::Point,B::Point,C::Point,D::Point)),[concurrentpoint(maltitude(quadrilateral(A,B,C,D)))],null),
Definition(maltitude(quadrilateral(A::Point,B::Point,C::Point,D::Point)),{[perpendicularline(midpoint(A,B),line(C,D))];[perpendicularline(midpoint(B,C),line(A,D))];[perpendicularline(midpoint(C,D),line(A,B))];[perpendicularline(midpoint(A,D),line(B,C))]},null),
Definition(cyclicquadrilateral(A::Point,B::Point,C::Point,D::Point),[quadrilateral(A,B,C,pointon(circle(A,B,C)))],null),
Definition(orthodiagonalquadrilateral(A::Point,B::Point,C::Point,D::Point),[quadrilateral(A,B,C,pointon(perpendicularline(B,line(A,C))))],null),
Definition(Miquelcircle(A::Point,D::Point,E::Point,side(B::Point,C::Point)),[circle(A,pointon(line(A,B)),pointon(line(A,C)))],null),
Definition(contacttriangle(triangle(A::Point,B::Point,C::Point)),[triangle(foot(O::Point,line(A,B)),foot(O,line(A,C)),foot(O,line(B,C)))whereO:=incenter(triangle(A,B,C))],null),
Definition(rotate(A::Point,B::Point,d::Degree),C::Point,not(is(A,B))),
Definition(parallelogram(A::Point,B::Point,C::Point,D::Point),[quadrilateral(A,B,C,D)whereD:=intersection(parallelline(A,line(B,C)),parallelline(C,line(A,B)))],null)
)